﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
    class Bus : IBus
    {
        // Listen - enthalten dazugehörige Objekte
        private List<Fenster> lFenster;
        private List<Licht> lLicht;
        private List<Heizung> lHeizung;
        private List<Rolllade> lRolllade;
        private List<Thermometer> lThermometer;

        // Konstruktor
        public Bus()
        {
            this.lFenster = new List<Fenster>();
            this.lLicht = new List<Licht>();
            this.lHeizung = new List<Heizung>();
            this.lRolllade = new List<Rolllade>();
            this.lThermometer = new List<Thermometer>();
        }//public Bus()
        
        // scanBus fragt den Bus ab und speichert alle gefundenen Elemente in 
        // einer Liste - gibt die Liste zurück
        public List<string> scanBus
        {
            get
            {
                List<string> temp = new List<string>();
                System.IO.StreamReader objReader = 
                    new System.IO.StreamReader("busscan.txt");
                string sLine = "";

                while (sLine != null)
                {
                    sLine = objReader.ReadLine();
                    if (sLine != null && !(sLine.Contains("//")))
                        temp.Add(sLine);
                }
                objReader.Close();

                return temp;
            }
        }//public List<string> scanBus

        // Wertet die Adresse aus und erzeugt ein neues Objekt
        // entsprechenden Typs in der dazugehörigen Liste.
        public void detectdev (List<string> liste)
        {
            string temp = string.Empty;

            foreach (string s in liste)
            {              
                // Werte den Adressteil aus
                // 01 - Licht
                // 02 - Fenster
                // 03 - Heizung
                // 04 - Thermometer
                // 05 - Rollladen
                switch(int.Parse(s.Substring(2, 2)))
                {
                    default: break;
                    case 1: lLicht.Add(new Licht(s));
                        break;
                    case 2: lFenster.Add(new Fenster(s));
                        break;
                    case 3: lHeizung.Add(new Heizung(s));
                        break;
                    case 4: lThermometer.Add(new Thermometer(s));
                        break;
                    case 5: lRolllade.Add(new Rolllade(s));
                        break;
                }//switch
            }//foreach
        }//public void detectdev
    }//class Bus : IBus
}
